home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_09_11
/
9n11022a
< prev
next >
Wrap
Text File
|
1991-08-31
|
2KB
|
73 lines
#include <stdio.h>
#include <stdlib.h>
#define scr_put(line, colm, c) /* position cursor and write */ \
printf("\033[%d;%dH%c", line, colm, c)
#define scr_clr() printf("\033[2J") /* clear screen */
void wait(unsigned int seconds);
typedef struct node {
struct node *pfwd; /* ptr to next node in list */
unsigned char line; /* cursor position line */
unsigned char colm; /* cursor position column */
unsigned char ch; /* char to be displayed */
} Node;
main()
{
Node *proot_node = NULL;/* start of data list */
Node *pnode; /* Node just allocated */
Node *pprev_node; /* Node previously allocated */
unsigned int line, colm;
unsigned char ch;
/* get input data pairs until EOF */
while (1) {
/* printf("Enter line, colm, char: "); */
if (scanf("%u %u %c", &line, &colm, &ch) == EOF)
break;
pnode = malloc(sizeof(Node));
if (pnode == NULL) {
fprintf(stderr, "Can't malloc Node\n");
exit(EXIT_FAILURE);
}
/* update root on first node only */
if (proot_node == NULL)
proot_node = pnode;
else
pprev_node->pfwd = pnode;
pnode->line = line;
pnode->colm = colm;
pnode->ch = ch;
pnode->pfwd = proot_node;
pprev_node = pnode;
}
/* cycle indefinitely through circular list, processing data */
if (proot_node == NULL) {
fprintf(stderr, "List is empty\n");
exit(EXIT_FAILURE);
}
pnode = proot_node;
while (1) {
if (pnode == proot_node) {
wait(5);
scr_clr();
}
scr_put(pnode->line, pnode->colm, pnode->ch);
pnode = pnode->pfwd;
}
return(EXIT_SUCCESS);
}